1 module test.linux_distros;
2 
3 unittest
4 {
5     import db_constraints;
6 
7     class Distros
8     {
9         class Distro
10         {
11             private int _id;
12             private string _name;
13             @PrimaryKeyColumn @NotNull
14             @property int id()
15             {
16                 return _id;
17             }
18             @property void id(int value)
19             {
20                 setter(_id, value);
21             }
22             @UniqueConstraintColumn!("uc_Distros_name")
23             @property string name()
24             {
25                 return _name;
26             }
27             @property void name(string value)
28             {
29                 // this._name = value;
30                 // this._containsChanges = true;
31                 // this.outer.itemChanged("name", this._key);
32                 // this.outer.itemChanged("uc_Distros_name_key", this._key);
33                 setter(_name, value);
34             }
35             this(int id_, string name_)
36             {
37                 this._id = id_;
38                 this._name = name_;
39                 initializeKeyedItem();
40             }
41             mixin KeyedItem!();
42         }
43         mixin KeyedCollection!(Distro);
44     }
45     Distros GetFromDB()
46     {
47         auto distros = new Distros();
48         distros.add(
49             [
50                 distros..new Distro(1, "Fedora"),
51                 distros..new Distro(2, "Ubuntu"),
52                 distros..new Distro(3, "Linux Mint"),
53                 distros..new Distro(4, "Debian"),
54                 distros..new Distro(5, "CentOS")
55             ]);
56         return distros;
57     }
58 
59     auto distros = GetFromDB();
60     assert(distros.length == 5);
61     assert(distros[1].name == "Fedora");
62     distros[3].name = "Mint";
63     assert(distros[3].name == "Mint");
64     assert(distros[3].outer is distros);
65 }